package config

import (
	"errors"
	"fmt"
	"github.com/unknwon/goconfig"
	"log"
	"os"
)

const configFile = "/conf/conf.ini"

var File *goconfig.ConfigFile

// 加载此文件时， 会先走初始化方法
func init() {
	// 获取当前目录下的配置文件路径
	currentDir, err := os.Getwd()
	if err != nil {
		panic(err)
	}
	configPath := currentDir + configFile
	// 判断配置文件是否在当前目录下配置
	if !fileExist(configPath) {
		panic(errors.New("配置文件不存在！"))
	}
	// 增加程序健壮性 添加配置文件参数
	// eg: mssgserver.exe D:/xxx
	len := len(os.Args)
	if len > 1 {
		dir := os.Args[1]
		if dir != "" {
			configPath = dir + configFile
		}
	}
	// 读取配置文件
	File, err = goconfig.LoadConfigFile(configPath)
	if err != nil {
		log.Fatal("读取配置文件出错: ", err)
	}
	fmt.Println("读取配置文件: ", File)
}

// fileExist True 文件存在 False 文件不存在
func fileExist(fileName string) bool {
	// Stat返回描述文件f的FileInfo类型值。如果出错，错误底层类型是*PathError。
	_, err := os.Stat(fileName)
	// 返回条件 err不为空且错误在os中存在 则 文件不存在
	return err == nil || os.IsExist(err)
}
